Packet-level forward error correction (FEC) is a known technique to improve object download times and good-put of connections by adding redundant packets to a packet stream. Forward error correction may be implemented in multiple layers of the communication stack, for instance in the application layer, transport layer, and/or link layer.
A high-level packet-level forward error correction architecture is shown on FIG. 1. The FEC-architecture contains two sides, a transmitter 12 side and a receiver 14 side. A FEC(n, r) scheme denotes that the sender sends n data packets, plus r redundant packets, in total n+r packets. The generated r redundant packets are some encoding of the p1, p2 . . . , pn original data packets. If during the transmission one or more data packets were lost, but some or redundant packets not, depending on the encoding scheme, the lost data packet(s) may be restored. Typically any n packets received out of the n+r total packets will result in correct recovery of all the encoded data packets.
In a basic case the encoding function is bitwise XOR, i.e. exclusive “OR”, and r=1. This means that packets pi, where i=1, . . . , n, i.e. packets p1, . . . , pn are bitwise XOR-ed together to get a single redundant packet, which is then also sent towards the destination. If maximum one packet pi of p1, . . . , pn packets was lost, and the single redundant packet was not, the packet pi may be restored, by applying XOR function to the received packets.
One example of integrating FEC-functionality into the transport layer is QUIC (Quick user datagram protocol (UDP) Connections). In QUIC, it is possible to send redundant packets by combining the payload of the previous data packets belonging to one and the same FEC group. The packets hold FEC group information in the header, identifying which group they belong to; the sequence number of the first packet may be derived from this info. The last packet in the FEC group has a flag indicating that the packet contains redundant information, as well as the FEC group information to identify the group of packets it protects. If packet loss happened during the transmission, the receiver attempts to recover the lost payload from the redundant packet; if it is not possible, then it explicitly or implicitly asks for retransmission.
Another example is transmission control protocol (TCP)-Corrective, which computes the XOR of multiple maximum segment size (MSS)-sized segments and sends the MSS-sized repair segment along with the data stream towards the receiver. The receiver has the capability to detect if a packet was recovered so the TCP receiver may signal congestion and the TCP sender may reduce the congestion window.
QUIC as well as TCP-Corrective employ an end-to-end technique integrated into the transport layer, which means that a whole communication stream may be protected end-to-end with FEC between transmitter and receiver endpoints. However, at some segments in the end-to-end connection, reliability may be achieved in different layers, for which reason transmitting FEC packets over a given segment may not be needed.
The main issue with QUIC and TCP-Corrective techniques is that they do not take into account the fact that some lower layers also implement reliability/redundancy/retransmission mechanisms, making the protection in higher layers redundant.
One example where protection in higher layers is redundant is long term evolution (LTE) radio access, where the radio link control (RLC) protocol over the radio link has an Acknowledged Mode, which ensures reliability by retransmission of lost/corrupted segments, making higher layer packet losses rare. In this case, transmitting the FEC-packet over the radio segment does not give any extra benefit, as there is another lower layer mechanism protecting against packet losses. As a consequence, the FEC-packet is transmitted in vain and the bandwidth of radio resources is effectively wasted. As the radio resource is often a scarce resource, the user-experienced performance of the network may become deteriorated.
There is hence a need for a solution addressing the issues as discussed above.